# _*_ coding:utf-8 _*_
# @author : Joyamon
# @time : 2022-12-7 15:09
# @file : models.py


"""
使用 MetaData 创建表 products：
说明：
SQL表达式语言针对表 列 构建其表达式。SQLAlchemy Column 对象表示数据库表中的 列，而该列
又由Tableobject 表示。元数据包含表和关联对象的定义，例如索引，视图，触发器等。
因此，来自SQLAlchemy Metadata的Metadata类的对象时Table对象及其关联模式构造的集合。
它包含一组Table对象以及一个到Engine或Connection的可选绑定。

https://www.lidihuo.com/sqlalchemy/sqlalchemy-core-creating-table.html
"""
from datetime import datetime
from sqlalchemy.orm import relationship
from exts import metadata, Engine, Base
from sqlalchemy import (
    Table,
    Column,
    Integer,
    String,
    Float,
    Text,
    String,
    DateTime, ForeignKey,
)



class Goods(Base):
    __tablename__ = 't_goods'
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(30))
    price = Column(String(10))
    component = Column(String(50))
    place_of_production = Column(String(100))
    date_of_manufacture = Column(DateTime, default=datetime.now)
    # ForeignKey需要导入，'t_goods.id':表名.id,(是表名，而不是与生成表结构无关，
    # 仅用于跨表查询方便)
    goodsType_id = Column(Integer, ForeignKey('t_goods_type.id'))
    gt = relationship('Goods_type', backref='goods')

    def __str__(self):
        return self.name


class Goods_type(Base):
    __tablename__ = 't_goods_type'
    id = Column(Integer, primary_key=True, autoincrement=True)
    type = Column(String(30))
